R/Implement Dashboard.R

#' Open PSLM Dashboard
#'
#' @return
#' @export
#'
#'@import shiny
#'@import shinythemes
#' @examples
implement_dashboard = function(){
  shinyApp(
    ui = navbarPage("PSLM 2014-15 Dashboard",
                    theme = shinytheme("spacelab"),
                    tabPanel("Plot", tab1(data_input = data_input())),
                    navbarMenu("More",
                               tabPanel("Summary Statistics", tab2(data_input = data_input())),
                               tabPanel("Table", "Table tab contents..."))
    ),
    server = function(input, output, session) {
      ####################### TAB 1 #######################
      #### Setting Sidebar Select Inputs ####
      observeEvent(input$data_type,{
        updateSelectInput(session, 'gen_query', choices = PSLMcerp::type_pull(input$data_type, "Type"))})
      observeEvent(input$gen_query,{
        updateSelectInput(session, 'req_info', choices = PSLMcerp::type_pull(input$gen_query, "Full"))})

      #### Main Plot ####
      df = eventReactive(input$req_info, {
        filter_chooser(data=data_chooser(input$data_type), prov = TRUE, dist = FALSE, region = FALSE, info_parser(input$req_info))
      })

      output$plotter = renderHighchart({
        t = typeof(df()[[info_parser(input$req_info)]])
        if(t == "character"){funky_plot_chr(df(), info_parser(input$req_info))}
        else{funky_plot_dbl(df(), info_parser(input$req_info),
                            zero_omit = input$select_zero)}
      })

      ####################### TAB 2 #######################
      #### Setting Sidebar Select Inputs ####
      observeEvent(input$data_type_t2,{
        updateSelectInput(session, 'gen_query_t2', choices = PSLMcerp::type_pull(input$data_type_t2, "Type"))})
      observeEvent(input$gen_query_t2,{
        updateSelectInput(session, 'req_info_t2', choices = PSLMcerp::type_pull(input$gen_query_t2, "Full"))})

      #### Main Table ####
      df_t2 = eventReactive(input$req_info_t2, {
        filter_chooser(data=data_chooser(input$data_type_t2), prov = TRUE, dist = FALSE, region = FALSE, info_parser(input$req_info_t2))
      })

      #### Summary Statistics ####
      output$table_sum = renderTable({summary_maker(df_t2(), info_parser(input$req_info_t2), zero_omit = input$select_zero_t2)})
      output$download_sum <- downloadHandler(
        filename = function() {
          paste(input$data_type_t2, "_", info_parser(input$req_info_t2), "_",
                input$req_info_t2, "_", "summary", ".csv", sep = "")},
        content = function(file) {
          write.csv(summary_maker(df_t2(), info_parser(input$req_info_t2)),
                    file, row.names = FALSE)})
      #### Raw Data ####
      output$download_raw <- downloadHandler(
        filename = function() {
          paste(input$data_type_t2, "_", info_parser(input$req_info_t2), "_",
                input$req_info_t2, "_", "raw", ".csv", sep = "")},
        content = function(file) {
          write.csv(df_t2(), file, row.names = FALSE)})
    }
  )
}
AltamashRafiq/PSLMcerp documentation built on June 25, 2019, 5:32 p.m.